<?php

class Osml_Application_Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{

    protected function _initDoctype()
    {
        
        $this->bootstrap('view');
        $view = $this->getResource('view');
        $view->doctype('XHTML1_STRICT');
        // Option à  activer pour facilité l'internationalisation.
        $view->setEscape('htmlentities');
        //  Certains Helpers Zend se base sur le paramêtre d'encodage des vues
        //  Il est donc conseiller de déclarer en fixe.
        //  Metre le même encodage que l'encodage déclaré dans l'entete html des pages.
        $view->setEncoding('UTF-8');
        $configAppli = $this->getOption('appli');
        $view->titre = $configAppli['titre'];
        $view->addHelperPath('ZendX/JQuery/View/Helper', 'ZendX_JQuery_View_Helper');
        $view->addHelperPath('Osml/View/Helper', 'Osml_View_Helper');
        $view->addHelperPath('Jnd/View/Helper', 'Jnd_View_Helper');
    }

    protected function _addModuleAutoloader( $modulesPath, $module = null )
    {
        
        if (empty($module)) {
            $module_namespace = '';
            $module_path = 'default';
        } else {
            $module = strtolower($module);
            $module_namespace = ucfirst($module);
            $module_path = $module;
        }
        $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => $module_namespace, 
            'basePath' => $modulesPath . DIRECTORY_SEPARATOR . $module_path
        ));
        $autoloader->setResourceTypes(array(
            'forms' => array(
                'namespace' => 'Form', 
                'path' => 'forms'
            ), 
            'model' => array(
                'namespace' => 'Model', 
                'path' => 'models'
            ), 
            'model_mapper' => array(
                'namespace' => 'Model_Mapper', 
                'path' => 'models/mappers'
            ), 
            'model_table' => array(
                'namespace' => 'Model_Table', 
                'path' => 'models/tables'
            )
        ));
        return $autoloader;
    }

    protected function _initAutoload()
    {
        
    }

    protected function _initTranslate()
    {
        
        $translate = new Zend_Translate('gettext', APPLICATION_PATH . "/lang/fr/messages_fr.mo", 'fr');
        Zend_Registry::set("traduction", $translate);
        Zend_Validate_Abstract::setDefaultTranslator($translate);
        Zend_Form::setDefaultTranslator($translate);
        return $translate;
    }
    
    protected function _initCacheLocale() {
        $cache = new Zend_Cache_Core();
        $backend = new Osml_Cache_Backend_File();
        $cache->setBackend($backend);
        Zend_Locale::setCache($cache);
    }

    // Ajout d'un cache de meta donnÃ©es
//  @todo: PrÃ©voir de vider le mÃ©tadatacache, et une activation en fonction de l'environnement (MYSQL)
//  protected function _initDbMetadataCache() {
//
//    $this->bootstrap('cachemanager');
//    $cache = $this->getResource('cachemanager')->getCache('default');
//    Zend_Db_Table::setDefaultMetadataCache($cache);
//  }
}

/**
 * Fonction d'aide pour la traduction
 * @param string $txt
 */
function __( $txt )
{
    
    return Zend_Registry::get('traduction')->_($txt);
}

